package com.jjty.dataGenerator.sxhcampus.utils;


import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Random;

/**
 * @Author: huangyulong
 * @createTime: 2023-04-14 17:24
 * @Description: 随机数生成工具
 */
public class RandomUtils {

    /**
     * 生成最大和最小值之间的随机数
     * @param min 最小值（包含）
     * @param max 最大值（包含）
     * @return int
     */
    public static int randomInt(int min,int max){
        //样本数
        int count = max - min + 1;
        return (int) (Math.random() * count) + min;
    }

    /**
     * 生成1位数的double类型随机数，参数最多以为小数
     * @param min
     * @param max
     * @return
     */
    public static double randomDouble1(double min,double max){
        double count = max - min;
        double v = Math.random() * count + min + 0.1;
        return new BigDecimal(v).setScale(1, RoundingMode.FLOOR).doubleValue();
    }


    private static final String[] SURNAMES = {
            "张", "李", "王", "刘", "陈", "杨", "赵", "黄", "周", "吴", "徐", "孙", "胡", "朱",
            "高", "林", "何", "郭", "马", "罗", "梁", "宋", "郑", "谢", "韩", "唐", "冯", "于",
            "董", "萧", "程", "曹", "袁", "邓", "许", "傅", "沈", "曾", "彭", "吕", "苏", "卢",
            "蒋", "蔡", "贾", "丁", "魏", "薛", "叶", "阎", "余", "潘", "杜", "戴", "夏", "钟",
            "汪", "田", "任", "姜", "范", "方", "石", "姚", "谭", "廖", "邹", "熊", "金", "陆",
            "郝", "孔", "白", "崔", "康", "毛", "邱", "秦", "江", "史", "顾", "侯", "邵", "孟",
            "龙", "万", "段", "雷", "钱", "汤", "尹", "黎", "易", "常", "武", "乔", "贺", "赖",
            "龚", "文", "欧阳", "上官"
    };

    private static final String[] FIRST_NAMES = {
            "伟", "芳", "娜", "敏", "静", "丽", "强", "磊", "军", "洋", "勇", "艳", "杰", "娟",
            "涛", "萍", "波", "丹", "刚", "辉", "玲", "超", "秀", "娟", "婷", "鹏", "浩", "然",
            "晓", "宁", "思", "雪", "佳", "小", "玉", "红", "春", "秋", "冬", "夏", "兰", "莲",
            "梅", "竹", "菊", "松", "鹤", "翠", "琴", "书", "瑶", "梦", "云", "霞", "露", "灵",
            "昕", "曦", "光", "辉", "欣", "怡", "悦", "乐", "安", "康", "福", "顺", "昌", "盛",
            "华", "荣", "富", "贵", "清", "明", "正", "直", "诚", "善", "美", "德", "才", "俊",
            "雅", "博", "学", "勤", "俭", "谦", "和", "忠", "孝", "仁", "爱", "礼", "义", "信",
            "天", "地", "山", "水", "金", "木", "水", "火", "土", "风", "雨", "雷", "电", "夕",
            "希", "梓", "悦", "雅", "柠", "果", "沐", "子", "泽", "霖", "航", "汐", "芮", "桐"
    };

    private static final String[] SUB_NAMES = {
            "浩宇", "奕辰", "宇轩", "若汐", "一诺" ,"艺涵" ,"依诺", "梓涵", "苡沫", "雨桐", "欣怡",
            "语桐", "语汐"
    };

    public static String getRandomName(){
        Random random = new Random();
        StringBuilder firstName = new StringBuilder();
        //名字字数(姓除外)
        int nameCount = random.nextInt(2)+1;
        //随机姓
        String surname = SURNAMES[random.nextInt(SURNAMES.length)];
        if(nameCount == 2 && random.nextInt() == 1){
            //名字个数为2时，有50概率直接选现成名字
            firstName.append(SUB_NAMES[random.nextInt(SUB_NAMES.length)]);
        }else{
            for (int i = 0; i < nameCount; i++) {
                firstName.append(FIRST_NAMES[random.nextInt(FIRST_NAMES.length)]);
            }
        }
        return surname + firstName;
    }

}
